#ifndef LCD_H
#define LCD_H

#include<iostream>
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/mman.h>
#include<fcntl.h>

class Lcd
{
    // 构造函数改为接收设备路径参数（私有，确保只能通过instance创建）
    Lcd(const char* dev_path); 
public:
    ~Lcd();

    // 初始化函数：必须传入设备路径（无默认值）
    void init(const char* dev_path);

    int* addr();               // 返回显存地址
    int getFd() const;         // 返回文件描述符

    // 单例接口：支持传入自定义设备路径（默认仍为/dev/fb0，可选填）
    static Lcd* instance(const char* dev_path = "/dev/fb0");
    static void delInstance(); // 销毁实例

private:
    int  fd;                   // 设备文件描述符
    int* mp;                   // 显存映射地址
    static Lcd* m_instance;    // 单例实例指针
};

#endif // LCD_H